package 哈希;

import java.util.*;

/**
 * @author TTDB
 * @create 2025/9/13
 */
public class groupAnagrams {
     public List<List<String>> groupAnagrams(String[] strs){
         // 异位词，对每一个字符排序后在比较一样再加入
         List<List<String>> res = new ArrayList<>();
         Map<String, List<String>> m = new HashMap<>();
         for (String str : strs) {
             //从这里开始等于一个编码方式：这里选择使用转char后排序，再转String用作Key
             char[] chars = str.toCharArray();
             Arrays.sort(chars);
             String key = new String(chars);
             if (!m.containsKey(key)) {
                 m.put(key, new ArrayList<>());
             }
             m.get(key).add(str);
         }
         // 遍历Map中的所有条目，将每个条目的值添加到结果列表中------这个方式得学习一下获取map中的value
         for (Map.Entry<String, List<String>> entry : m.entrySet()) {
             res.add(entry.getValue());
         }
         //遍历键,然后添加值，m.values()也可以没必要非得上面这个不熟悉的话
//         for(String K : m.keySet()){
//             res.add(m.get(K));
//         }
         //字节流方式
         //return m.values().stream().collect(Collectors.toList());
         return res;
     }
}
